package org.deng.learn.designpattern.singleton;

/**
 * @ Author: DengLibin
 * @ Description: 单利模式三 线程安全 懒加载
 * @ DateTime:  21:53 2018/5/7 0007
 */
public class Singleton3 {
    private static volatile Singleton3 instance; //使用volatile关键字，禁止创建对象时的指令重排序
    private Singleton3(){}

    public static Singleton3 getInstance(){
        if(instance ==  null){ //可能会出现 对象创建了但还没初始化（所以加个volatile修饰，具体查看java并发编程艺术第三章第8节）
            synchronized (Singleton3.class){
                if(instance == null){
                    instance = new Singleton3();
                }
            }
        }
        return instance;
    }
}
